package domain

import org.apache.commons.lang.builder.HashCodeBuilder

class UsuarioSegurancaSecRole implements Serializable {

	UsuarioSeguranca usuarioSeguranca
	SecRole secRole

	boolean equals(other) {
		if (!(other instanceof UsuarioSegurancaSecRole)) {
			return false
		}

		other.usuarioSeguranca?.id == usuarioSeguranca?.id &&
			other.secRole?.id == secRole?.id
	}

	int hashCode() {
		def builder = new HashCodeBuilder()
		if (usuarioSeguranca) builder.append(usuarioSeguranca.id)
		if (secRole) builder.append(secRole.id)
		builder.toHashCode()
	}

	static UsuarioSegurancaSecRole get(long usuarioSegurancaId, long secRoleId) {
		find 'from UsuarioSegurancaSecRole where usuarioSeguranca.id=:usuarioSegurancaId and secRole.id=:secRoleId',
			[usuarioSegurancaId: usuarioSegurancaId, secRoleId: secRoleId]
	}

	static UsuarioSegurancaSecRole create(UsuarioSeguranca usuarioSeguranca, SecRole secRole, boolean flush = false) {
		new UsuarioSegurancaSecRole(usuarioSeguranca: usuarioSeguranca, secRole: secRole).save(flush: flush, insert: true)
	}

	static boolean remove(UsuarioSeguranca usuarioSeguranca, SecRole secRole, boolean flush = false) {
		UsuarioSegurancaSecRole instance = UsuarioSegurancaSecRole.findByUsuarioSegurancaAndSecRole(usuarioSeguranca, secRole)
		if (!instance) {
			return false
		}

		instance.delete(flush: flush)
		true
	}

	static void removeAll(UsuarioSeguranca usuarioSeguranca) {
		executeUpdate 'DELETE FROM UsuarioSegurancaSecRole WHERE usuarioSeguranca=:usuarioSeguranca', [usuarioSeguranca: usuarioSeguranca]
	}

	static void removeAll(SecRole secRole) {
		executeUpdate 'DELETE FROM UsuarioSegurancaSecRole WHERE secRole=:secRole', [secRole: secRole]
	}

	static mapping = {
		id composite: ['secRole', 'usuarioSeguranca']
		version false
	}
}
